home *** CD-ROM | disk | FTP | other *** search
/ Developer Helper 1: Phil & Dave's Excellent CD / Excellent CD HFS.raw / Moof / Goodies / MPW Goodies / Interfaces / CIncludes / PrintTraps.h < prev    next >
Text File  |  1988-11-30  |  12KB  |  392 lines

  1. /************************************************************
  2.  
  3. Created: Tuesday, October 4, 1988 at 7:39 PM
  4.     PrintTraps.h
  5.     C Interface to the Macintosh Libraries
  6.  
  7.  
  8.     Copyright Apple Computer, Inc.  1985-1988
  9.     All rights reserved
  10.  
  11. ************************************************************/
  12.  
  13.  
  14. #ifndef __PRINTTRAPS__
  15. #define __PRINTTRAPS__
  16.  
  17. #ifndef __QUICKDRAW__
  18. #include <Quickdraw.h>
  19. #endif
  20.  
  21. #ifndef __DIALOGS__
  22. #include <Dialogs.h>
  23. #endif
  24.  
  25. #define bDraftLoop 0
  26. #define bSpoolLoop 1
  27. #define iPFMaxPgs 128               /*Max number of pages in a print file.*/
  28. #define iPrPgFract 120
  29. #define iPrPgFst 1                  /*Page range constants*/
  30. #define iPrPgMax 9999
  31. #define iPrRelease 2                /*Current version number of the code.*/
  32. #define iPrSavPFil -1
  33. #define iIOAbort -27
  34. #define pPrGlobals 0x00000944
  35. #define bUser1Loop 2
  36. #define bUser2Loop 3
  37. #define fNewRunBit 2                /*Bit 2 (3rd bit) in bDocLoop is new JobRun indicator.*/
  38. #define fHiResOK 3                  /*Bit 3 (4th bit) in bDocLoop is hi res indicator for paint.*/
  39. #define fWeOpenedRF 4               /*Bit 4 (5th bit) in bDocLoop is set if driver opened the pr res file.*/
  40. #define iPrAbort 128
  41. #define iPrDevCtl 7                 /*The PrDevCtl Proc's ctl number*/
  42. #define lPrReset 0x00010000         /*The PrDevCtl Proc's CParam for reset*/
  43. #define lPrLineFeed 0x00030000
  44. #define lPrLFStd 0x0003FFFF         /*The PrDevCtl Proc's CParam for std paper advance*/
  45. #define lPrLFSixth 0x0003FFFF
  46. #define lPrPageEnd 0x00020000       /*The PrDevCtl Proc's CParam for end page*/
  47. #define lPrDocOpen 0x00010000       /*note: same as lPrReset low order byte indicates number of copies to print*/
  48. #define lPrPageOpen 0x00040000
  49. #define lPrPageClose 0x00020000     /*note: same as lPrPageEnd*/
  50. #define lPrDocClose 0x00050000
  51. #define iFMgrCtl 8                  /*The FMgr's Tail-hook Proc's ctl number*/
  52. #define iMscCtl 9                   /*Msc Text state / Drvr State ctl number*/
  53. #define iPvtCtl 10                  /*Private ctls start here*/
  54. #define iMemFullErr -108
  55.  
  56. /* 
  57. Driver constants */
  58.  
  59. #define iPrBitsCtl 4                /*The Bitmap Print Proc's ctl number*/
  60. #define lScreenBits 0               /*The Bitmap Print Proc's Screen Bitmap param*/
  61. #define lPaintBits 1                /*The Bitmap Print Proc's Paint [sq pix] param*/
  62. #define lHiScreenBits 0x00000002    /*The Bitmap Print Proc's Screen Bitmap param*/
  63. #define lHiPaintBits 0x00000003     /*The Bitmap Print Proc's Paint [sq pix] param*/
  64. #define iPrIOCtl 5                  /*The Raw Byte IO Proc's ctl number*/
  65. #define iPrEvtCtl 6                 /*The PrEvent Proc's ctl number*/
  66. #define lPrEvtAll 0x0002FFFD        /*The PrEvent Proc's CParam for the entire screen*/
  67. #define lPrEvtTop 0x0001FFFD        /*The PrEvent Proc's CParam for the top folder*/
  68. #define sPrDrvr ".Print"
  69. #define iPrDrvrRef -3
  70. #define getRslDataOp 4              /*PrGeneral Cs*/
  71. #define setRslOp 5                  /*PrGeneral Cs*/
  72. #define draftBitsOp 6               /*PrGeneral Cs*/
  73. #define noDraftBitsOp 7             /*PrGeneral Cs*/
  74. #define getRotnOp 8                 /*PrGeneral Cs*/
  75. #define NoSuchRsl 1                 /*PrGeneral Cs*/
  76. #define RgType1 1                   /*PrGeneral Cs*/
  77.  
  78. enum {feedCut,feedFanfold,feedMechCut,feedOther};
  79. typedef unsigned char TFeed;
  80.  
  81. enum {scanTB,scanBT,scanLR,scanRL};
  82. typedef unsigned char TScan;
  83.  
  84. typedef Rect *TPRect;
  85.  
  86. typedef pascal void (*PrIdleProcPtr)(void);
  87. typedef pascal short (*PItemProcPtr)(DialogPtr theDialog, short item);
  88.  
  89. struct TPrPort {
  90.     GrafPort gPort;                 /*The Printer's graf port.*/
  91.     QDProcs gProcs;                 /*..and its procs*/
  92.     long lGParam1;                  /*16 bytes for private parameter storage.*/
  93.     long lGParam2;
  94.     long lGParam3;
  95.     long lGParam4;
  96.     Boolean fOurPtr;                /*Whether the PrPort allocation was done by us.*/
  97.     Boolean fOurBits;               /*Whether the BitMap allocation was done by us.*/
  98. };
  99.  
  100. #ifndef __cplusplus
  101. typedef struct TPrPort TPrPort;
  102. #endif
  103.  
  104. typedef TPrPort *TPPrPort;
  105.  
  106. /* Printing Graf Port. All printer imaging, whether spooling, banding, etc, happens "thru" a GrafPort.
  107. This is the "PrPeek" record.
  108.  */
  109. struct TPrInfo {
  110.     short iDev;                     /*Font mgr/QuickDraw device code*/
  111.     short iVRes;                    /*Resolution of device, in device coordinates*/
  112.     short iHRes;                    /*..note: V before H => compatable with Point.*/
  113.     Rect rPage;                     /*The page (printable) rectangle in device coordinates.*/
  114. };
  115.  
  116. #ifndef __cplusplus
  117. typedef struct TPrInfo TPrInfo;
  118. #endif
  119.  
  120. typedef TPrInfo *TPPrInfo;
  121.  
  122. /* Print Info Record: The parameters needed for page composition. */
  123. struct TPrStl {
  124.     short wDev;                     /*The device (driver) number. Hi byte=RefNum, Lo byte=variant. f0 = fHiRes f1 = fPortrait, f2 = fSqPix, f3 = f2xZoom, f4 = fScroll.*/
  125.     short iPageV;                   /*paper size in units of 1/iPrPgFract*/
  126.     short iPageH;                   /* ..note: V before H => compatable with Point.*/
  127.     char bPort;                     /*The IO port number. Refnum?*/
  128.     TFeed feed;                     /*paper feeder type.*/
  129. };
  130.  
  131. #ifndef __cplusplus
  132. typedef struct TPrStl TPrStl;
  133. #endif
  134.  
  135. typedef TPrStl *TPPrStl;
  136.  
  137. /* Printer Style: The printer configuration and usage information. */
  138. struct TPrXInfo {
  139.     short iRowBytes;
  140.     short iBandV;
  141.     short iBandH;
  142.     short iDevBytes;
  143.     short iBands;
  144.     char bPatScale;
  145.     char bUlThick;
  146.     char bUlOffset;
  147.     char bUlShadow;
  148.     TScan scan;
  149.     char bXInfoX;
  150. };
  151.  
  152. #ifndef __cplusplus
  153. typedef struct TPrXInfo TPrXInfo;
  154. #endif
  155.  
  156. typedef TPrXInfo *TPPrXInfo;
  157.  
  158. struct TPrJob {
  159.     short iFstPage;
  160.     short iLstPage;
  161.     short iCopies;
  162.     char bJDocLoop;
  163.     Boolean fFromUsr;
  164.     PrIdleProcPtr pIdleProc;
  165.     StringPtr pFileName;
  166.     short iFileVol;
  167.     char bFileVers;
  168.     char bJobX;
  169. };
  170.  
  171. #ifndef __cplusplus
  172. typedef struct TPrJob TPrJob;
  173. #endif
  174.  
  175. typedef TPrJob *TPPrJob;
  176.  
  177. struct TPrint {
  178.     short iPrVersion;               /*(2) Printing software version*/
  179.     TPrInfo prInfo;                 /*(14) the PrInfo data associated with the current style.*/
  180.     Rect rPaper;                    /*(8) The paper rectangle [offset from rPage]*/
  181.     TPrStl prStl;                   /*(8)  This print request's style.*/
  182.     TPrInfo prInfoPT;               /*(14)  Print Time Imaging metrics*/
  183.     TPrXInfo prXInfo;               /*(16)  Print-time (expanded) Print info record.*/
  184.     TPrJob prJob;                   /*(20) The Print Job request (82)  Total of the above; 120-82 = 38 bytes needed to fill 120*/
  185.     short printX[19];               /*Spare to fill to 120 bytes!*/
  186. };
  187.  
  188. #ifndef __cplusplus
  189. typedef struct TPrint TPrint;
  190. #endif
  191.  
  192. typedef TPrint *TPPrint, **THPrint;
  193.  
  194. /* The universal 120 byte printing record */
  195. struct TPrStatus {
  196.     short iTotPages;                /*Total pages in Print File.*/
  197.     short iCurPage;                 /*Current page number*/
  198.     short iTotCopies;               /*Total copies requested*/
  199.     short iCurCopy;                 /*Current copy number*/
  200.     short iTotBands;                /*Total bands per page.*/
  201.     short iCurBand;                 /*Current band number*/
  202.     Boolean fPgDirty;               /*True if current page has been written to.*/
  203.     Boolean fImaging;               /*Set while in band's DrawPic call.*/
  204.     THPrint hPrint;                 /*Handle to the active Printer record*/
  205.     TPPrPort pPrPort;               /*Ptr to the active PrPort*/
  206.     PicHandle hPic;                 /*Handle to the active Picture*/
  207. };
  208.  
  209. #ifndef __cplusplus
  210. typedef struct TPrStatus TPrStatus;
  211. #endif
  212.  
  213. typedef TPrStatus *TPPrStatus;
  214.  
  215. /* Print Status: Print information during printing. */
  216. struct TPfPgDir {
  217.     short iPages;
  218.     long iPgPos[129];               /*ARRAY [0..iPfMaxPgs] OF LONGINT*/
  219. };
  220.  
  221. #ifndef __cplusplus
  222. typedef struct TPfPgDir TPfPgDir;
  223. #endif
  224.  
  225. typedef TPfPgDir *TPPfPgDir, **THPfPgDir;
  226.  
  227. /* PicFile = a TPfHeader followed by n QuickDraw Pics (whose PicSize is invalid!) */
  228. struct TPrDlg {
  229.     DialogRecord Dlg;               /*The Dialog window*/
  230.     ModalFilterProcPtr pFltrProc;   /*The Filter Proc.*/
  231.     PItemProcPtr pItemProc;         /*The Item evaluating proc.*/
  232.     THPrint hPrintUsr;              /*The user's print record.*/
  233.     Boolean fDoIt;
  234.     Boolean fDone;
  235.     long lUser1;                    /*Four longs for user's to hang global data.*/
  236.     long lUser2;                    /*...Plus more stuff needed by the particular printing dialog.*/
  237.     long lUser3;
  238.     long lUser4;
  239. };
  240.  
  241. #ifndef __cplusplus
  242. typedef struct TPrDlg TPrDlg;
  243. #endif
  244.  
  245. typedef TPrDlg *TPPrDlg;
  246.  
  247. typedef pascal TPPrDlg (*PDlgInitProcPtr)(THPrint hPrint);
  248.  
  249. /* This is the Printing Dialog Record. Only used by folks appending their own dialogs.
  250. Print Dialog: The Dialog Stream object. */
  251.  
  252.  
  253. struct TGnlData {
  254.     short iOpCode;
  255.     short iError;
  256.     long lReserved;                 /*more fields here depending on call*/
  257. };
  258.  
  259. #ifndef __cplusplus
  260. typedef struct TGnlData TGnlData;
  261. #endif
  262.  
  263. struct TRslRg {
  264.     short iMin;
  265.     short iMax;
  266. };
  267.  
  268. #ifndef __cplusplus
  269. typedef struct TRslRg TRslRg;
  270. #endif
  271.  
  272. struct TRslRec {
  273.     short iXRsl;
  274.     short iYRsl;
  275. };
  276.  
  277. #ifndef __cplusplus
  278. typedef struct TRslRec TRslRec;
  279. #endif
  280.  
  281. struct TGetRslBlk {
  282.     short iOpCode;
  283.     short iError;
  284.     long lReserved;
  285.     short iRgType;
  286.     TRslRg xRslRg;
  287.     TRslRg yRslRg;
  288.     short iRslRecCnt;
  289.     TRslRec rgRslRec[27];
  290. };
  291.  
  292. #ifndef __cplusplus
  293. typedef struct TGetRslBlk TGetRslBlk;
  294. #endif
  295.  
  296. struct TSetRslBlk {
  297.     short iOpCode;
  298.     short iError;
  299.     long lReserved;
  300.     THPrint hPrint;
  301.     short iXRsl;
  302.     short iYRsl;
  303. };
  304.  
  305. #ifndef __cplusplus
  306. typedef struct TSetRslBlk TSetRslBlk;
  307. #endif
  308.  
  309. struct TDftBitsBlk {
  310.     short iOpCode;
  311.     short iError;
  312.     long lReserved;
  313.     THPrint hPrint;
  314. };
  315.  
  316. #ifndef __cplusplus
  317. typedef struct TDftBitsBlk TDftBitsBlk;
  318. #endif
  319.  
  320. struct TGetRotnBlk {
  321.     short iOpCode;
  322.     short iError;
  323.     long lReserved;
  324.     THPrint hPrint;
  325.     Boolean fLandscape;
  326.     char bXtra;
  327. };
  328.  
  329. #ifndef __cplusplus
  330. typedef struct TGetRotnBlk TGetRotnBlk;
  331. #endif
  332.  
  333. #ifdef __safe_link
  334. extern "C" {
  335. #endif
  336. pascal void PrPurge(void)
  337.     = {0x2F3C,0xA800,0x0000,0xA8FD}; 
  338. pascal void PrNoPurge(void)
  339.     = {0x2F3C,0xB000,0x0000,0xA8FD}; 
  340. pascal Handle PrDrvrDCE(void)
  341.     = {0x2F3C,0x9400,0x0000,0xA8FD}; 
  342. pascal short PrDrvrVers(void)
  343.     = {0x2F3C,0x9A00,0x0000,0xA8FD}; 
  344. pascal void PrOpen(void)
  345.     = {0x2F3C,0xC800,0x0000,0xA8FD}; 
  346. pascal void PrClose(void)
  347.     = {0x2F3C,0xD000,0x0000,0xA8FD}; 
  348. pascal void PrintDefault(THPrint hPrint)
  349.     = {0x2F3C,0x2004,0x0480,0xA8FD}; 
  350. pascal Boolean PrValidate(THPrint hPrint)
  351.     = {0x2F3C,0x5204,0x0498,0xA8FD}; 
  352. pascal Boolean PrStlDialog(THPrint hPrint)
  353.     = {0x2F3C,0x2A04,0x0484,0xA8FD}; 
  354. pascal Boolean PrJobDialog(THPrint hPrint)
  355.     = {0x2F3C,0x3204,0x0488,0xA8FD}; 
  356. pascal void PrJobMerge(THPrint hPrintSrc,THPrint hPrintDst)
  357.     = {0x2F3C,0x5804,0x089C,0xA8FD}; 
  358. pascal TPPrPort PrOpenDoc(THPrint hPrint,TPPrPort pPrPort,Ptr pIOBuf)
  359.     = {0x2F3C,0x0400,0x0C00,0xA8FD}; 
  360. pascal void PrCloseDoc(TPPrPort pPrPort)
  361.     = {0x2F3C,0x0800,0x0484,0xA8FD}; 
  362. pascal void PrOpenPage(TPPrPort pPrPort,TPRect pPageFrame)
  363.     = {0x2F3C,0x1000,0x0808,0xA8FD}; 
  364. pascal void PrClosePage(TPPrPort pPrPort)
  365.     = {0x2F3C,0x1800,0x040C,0xA8FD}; 
  366. pascal void PrPicFile(THPrint hPrint,TPPrPort pPrPort,Ptr pIOBuf,Ptr pDevBuf,
  367.     TPrStatus *prStatus)
  368.     = {0x2F3C,0x6005,0x1480,0xA8FD}; 
  369. pascal short PrError(void)
  370.     = {0x2F3C,0xBA00,0x0000,0xA8FD}; 
  371. pascal void PrSetError(short iErr)
  372.     = {0x2F3C,0xC000,0x0200,0xA8FD}; 
  373. pascal void PrGeneral(Ptr pData)
  374.     = {0x2F3C,0x7007,0x0480,0xA8FD}; 
  375. pascal void PrDrvrOpen(void)
  376.     = {0x2F3C,0x8000,0x0000,0xA8FD}; 
  377. pascal Boolean PrDlgMain(THPrint hPrint,PDlgInitProcPtr pDlgInit)
  378.     = {0x2F3C,0x4A04,0x0894,0xA8FD}; 
  379. pascal void PrDrvrClose(void)
  380.     = {0x2F3C,0x8800,0x0000,0xA8FD}; 
  381. pascal TPPrDlg PrJobInit(THPrint hPrint)
  382.     = {0x2F3C,0x4404,0x0410,0xA8FD}; 
  383. pascal void PrCtlCall(short iWhichCtl,long lParam1,long lParam2,long lParam3)
  384.     = {0x2F3C,0xA000,0x0E00,0xA8FD}; 
  385. pascal TPPrDlg PrStlInit(THPrint hPrint)
  386.     = {0x2F3C,0x3C04,0x040C,0xA8FD}; 
  387. #ifdef __safe_link
  388. }
  389. #endif
  390.  
  391. #endif
  392.